iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
自我挑戰組

Design Pattern - 無所不在的設計模式系列 第 28

[Day28] Design Pattern - Template method模板方法模式

  • 分享至 

  • xImage
  •  

定義


Template Method is a behavioral design pattern that defines the skeleton of an algorithm in the superclass but lets subclasses override specific steps of the algorithm without changing its structure.
--Refactoring Guru

模板方法模式是一種行為型設計模式,它在父類別定義了一種演算法的骨架,允許子類別在不修改結構的情況下覆寫特定步驟。

模板方法模式通常用在


模板方法模式通常用於以下情況:

  1. 定義演算法的架構:
    當你需要定義一個演算法的基本結構,但希望允許不同部分的具體實作有所不同時,可以使用模板方法模式。這確保了演算法的整體結構在所有子類別中保持一致。

  2. 避免程式碼重複:
    如果多個類別具有相似的演算法結構,但具體步驟有所不同,模板方法幫助避免程式碼重複,因為共同的步驟被提取到父類別中。

  3. 子類別定製:
    當您希望允許子類別對演算法的特定部分進行個別定製時,模板方法模式很有用。子類別可以實作父類別中的抽象方法以提供自己的實作。

  4. 框架和library開發:
    模板方法常見於框架和library的開發中,因為它們定義了框架的核心行為,但讓應用程式開發人員能夠通過子類別來自定義和擴展功能。

  5. 固定流程:
    當您希望強制執行一個特定的流程或步驟序列,但允許部分步驟根據需要變化時,模板方法是一個理想的選擇。

總之,模板方法模式有助於確保一致性和可重複性,同時允許個別部分有不同的實作方式,這在許多不同的應用程式中都非常有用。

模板方法模式的元素


  • AbstractClass(抽象類別):
    這將是一個包含模板方法的抽象類別,該方法定義了創建產品的步驟。它還包含了每個步驟的抽象方法,這些方法將由子類別來實作。

  • ConcreteClassA/B(具體類別A/B):
    這些是具體類別,這些類別繼承自抽象類別並以自己的方式覆寫抽象類別的抽象方法。

  • Client(客戶端):
    客戶端將使用AbstractClass(抽象類別)的模板方法來創建不同的產品。

UML



上一篇
[Day27] Design Pattern - Strategy 策略模式
下一篇
[Day29] Design Pattern - Visitor訪問者模式
系列文
Design Pattern - 無所不在的設計模式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言